// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import ListClass from '@api/base/model/ScheduleListQueryReq'
import BaseClass from '@api/base/model/ScheduleDto'
import CycleClass from '@api/base/model/ScheduleCycleDto'
import TimeClass from '@api/base/model/ScheduleTimeDto'
import API from './API'

const CYCLE = {
  ...CORE.initObj(CycleClass),
  key: CORE.fileName(),
  time: CORE.initObj(TimeClass),
}

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: '班次', // 词语
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 天数字典
     */
    DAYS: Array(31).fill().map((_, i) => [i + 1, i + 1]),

    /**
     * 类型
     */
    TYPE: [
      [1, '常规班'],
      [2, '循环班'],
    ],

    /**
     * 包含字典
     */
    INCLUDE: [
      [1, '包含'],
      [2, '不包含'],
    ],
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, {
    //
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setOne() 重置时使用
   * 4. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    status: 1, // 状态 (默认启用)
    scheduleType: 1, // 班次类型 (默认常规班)
    userIds: '', // 员工 ID 拼接串
    cycles: [CYCLE], // 循环列表
    cycle: CYCLE, // 当前正在选择班时的一天
  }),
}
